//
//  CPJWeiboListDAL.swift
//  Sina
//
//  Created by YYY on 2017/9/11.
//  Copyright © 2017年 成品家（北京）网路科技有限公司. All rights reserved.
//

import Foundation

//DAL：数据访问层
class CPJWeiboListDAL
{
    
    /// 从本地数据库或者网络加载数据
    ///
    /// - Parameters:
    ///   - since_id: 下拉刷新 id
    ///   - max_id: 上拉加载 id
    ///   - completion: 完成回调（微博列表数据的字典数组，是否成功）
    class func loadStatus(since_id: Int64 = 0,max_id: Int64 = 0,completion: @escaping(_ list: [[String: AnyObject]]?, _ isSuccess: Bool) -> ())
    {
        //获取用户id
        guard let userId = CPJNetworkManager.shared.userAccount.uid else
        {
            return
        }
        
        //检查本地数据，如果有，直接返回
        let array = CPJSQLiteManager.shared.loadStatus(userId: userId, since_id: since_id, max_id: max_id)
        if array.count > 0
        {
            completion(array, true)
            return
        }
        
        //加载网络数据
        CPJNetworkManager.shared.statusList(since_id: since_id, max_id: max_id) { (jsonData, isSuccess) in
            
            //判断网络请求是否成功
            if !isSuccess
            {
                completion(nil, false)
            }
            guard let list = jsonData else
            {
                completion(nil, isSuccess)
                return
            }
            
            //加载完成后，将网络数据【字典数组】，同步写入数据库
            CPJSQLiteManager.shared.updateTable(userId: userId, array: list)
            //返回网络数据
            completion(list, isSuccess)
        }
        
    }
}
